10 POKE 53281,0:PRINT"[158][147]":POKE 53280,2 15 PRINT"[206][205]SINGLE FILE COPY[205][206]" 16 PRINT" MODIFIED BY:" 17 PRINT"[158]>BRUCE LYNN &" 18 PRINT">MIKE FULLMER" 20 REM SINGLE DRIVE FILE COPY 30 REMEMBER!! THIS PROGRAM WAS VASTLY MODIFIED BY BRUCE LYNN ON 10/06/83 35 REMEMBER!! ALSO BY MIKE FULLMER ON 10/10/83 40 POKE52,31:POKE56,31:CLR 45 FORI=0TO173 50 READD:POKE7936+I,D:NEXT 55 POKE785,0:POKE786,31 60 PL$=CHR$(19) 65 FORI=1TO24:PL$=PL$+CHR$(17):NEXT 70 FORI=1TO39:CL$=CL$+" ":NEXT 75 CL$=CL$+CHR$(13)+CL$+CHR$(13) 80 CL$=LEFT$(PL$,21)+CL$+CHR$(145) 85 OPEN15,8,15:REM OPEN ERROR CHANNEL 90 GOTO1010 100 : 110 REM READ THE DIRECTORY 130 POKE785,0:REM SELECT READ FUNCTION 140 PRINT#15,"I":OPEN2,8,2,"$" 150 NB=USR(2):REM LOAD DIR INTO MEMORY 160 CLOSE2:GOSUB800:REM CHECK ERROR 170 RETURN 200 : 210 REM DISPLAY DISK NAME 230 POKE785,6:REM SELECT FETCH CHAR 240 PRINT"[156]"LEFT$(PL$,3);CHR$(18); 250 FORK=142TO169 260 PRINTCHR$(USR(K));:NEXT 270 PRINTCHR$(146)"[158]" 280 RETURN 300 : 310 REM PRINT DIRECTORY ENTRY DE 330 POKE785,6:REM SELECT FETCH CHAR 340 IX=(DE-1)*32+254-INT((DE-1)/8)*2 345 IFUSR(IX)<128THENRETURN 350 TY=USR(IX)-128:IFTY=0ORTY>3THENRETURN 360 FOR K=IX+3 TO IX+18 370 PRINTCHR$(USR(K)); 380 NEXT:PRINTTAB(16);","; 390 PRINTMID$("SPU",TY,1),",";:A$=STR$(USR(IX+28)+256*USR(IX+29)):A$=MID$(A$,2) 395 PRINTA$" ":RETURN 400 : 410 REM GET DESTINATION DISK 430 PRINTCL$; 440 PRINT"INSERT DESTINATION[158] DISK." 450 PRINT"PRESS ";CHR$(18);"RETURN"; 460 PRINTCHR$(146);" WHEN READY." 470 GETDM$:IFDM$=""THEN470 480 IFDM$<>CHR$(13)GOTO470 490 PRINT#15,"UI":PRINT#15,"I":RETURN 500 : 510 REM GET A FILE TO COPY 530 PRINTCL$;:IFEN=63GOTO580 540 IFUE=128THENPRINTNM$;" TOO LARGE."; 550 IFEN=62THENPRINTNM$;" NOT FOUND."; 560 PRINT"[153]MOVE CURSOR ON FILE TO COPY":L3$="":EN=0:UE=0 570 NM$="":INPUTNM$,TY$,L3$::PRINT"[158]" 572 IF L3$="F"THEN PRINT"[145][145][145]";:GOSUB 30030:PRINT"[145][145]":GOTO 560 575 RETURN 580 PRINTNM$;" EXISTS.":PRINT"ENTER NEW NAME"; 590 EN=0:NM$="":INPUT NM$:RETURN 600 : 610 REM READ THE FILE 630 POKE785,0:REM SELECT READ FUNCTION 640 OPEN2,8,2,"0:"+NM$+","+TY$+",R" 650 GOSUB900:IFEN<>0THENCLOSE2:RETURN 660 NB=USR(2):REM READ THE FILE 670 CLOSE2:GOSUB800:REM CHECK RESULTS 680 RETURN 700 : 710 REM WRITE THE FILE 730 POKE785,3:REM SELECT WRITE FUNCTION 740 OPEN2,8,2,NM$+","+TY$+",W" 750 GOSUB900:IFEN<>0THENCLOSE2:RETURN 760 NB=USR(2):REM WRITE THE BYTES 770 CLOSE2:GOSUB800:REM CHECK RESULTS 780 RETURN 800 : 810 REM CHECK USR() RETURN VALUE 830 NB=NB-(NB<0)*65536 840 IFNB<61440THENUE=0:RETURN 850 IFNB=61440THENUE=128:RETURN 860 PRINTCL$; 870 IFPEEK(785)=0THENPRINT"READ"; 880 IFPEEK(785)=3THENPRINT"WRITE"; 890 PRINT" ERROR #";NB-61440:END 900 : 910 REM READ ERROR CHANNEL 940 INPUT#15,EN,EM$,ET,ES 950 IFEN=0OREN=62OREN=63OREN=74THENRETURN 960 CLOSE15:PRINTCL$ 970 PRINT"DISK ERROR #";EN 980 PRINTLEFT$(PL$,22);EM$:END 1000 : 1010 REM MAIN ROUTINE 1030 PRINTCHR$(147);:REM CLEAR SCREEN 1040 PRINT" [154]<<SINGLE DRIVE FILE COPY[154]>>" 1050 PRINT:PRINT"[153]==>READING DIRECTORY[158]" 1060 GOSUB110:REM READ THE DIR 1070 GOSUB210:REM DISPLAY TITLE 1080 NS=INT((NB+1)/254) 1090 IFNS=1GOTO4010:REM NO FILES 1100 DS=1 1110 IFNS<=DSTHENDS=1:REM START OVER 1120 PRINTLEFT$(PL$,4) 1130 BE=(DS-1)*8:LE=BE+15 1140 IFDS+1=NSTHENLE=BE+8 1150 FOR DE=BE TO LE 1160 GOSUB310:NEXT:REM DISPLAY FILES 1170 FORI=PEEK(214)TO20:REM CLEAR 1180 PRINT" " 1190 NEXT 1200 GOSUB510:REM GET FILE NAME 1210 IFNM$=""THENDS=DS+2:GOTO1110 2010 REM COPY THE FILE 2030 PRINTCL$; 2040 PRINT"READING ";NM$ 2045 PRINT" " 2050 GOSUB610:REM READ THE FILE 2060 IFEN=62 OR UE=128 GOTO 1200 2070 BC=NB:REM SAVE COUNT 2080 GOSUB410:REM GET DEST. DISK 2090 PRINTCL$;" WRITING ";NM$:PRINT" " 2100 GOSUB710:REM WRITE THE FILE 2110 IFEN=0GOTO3010 2120 GOSUB510:REM GET NEW FILE 2130 IFNM$<>""GOTO2090 2140 PRINTCL$;" FILE NOT COPIED" 2150 GOTO3100 3010 REM DISPLAY COMPLETION STATUS 3030 PRINTCL$; 3040 IFNB<>BCGOTO3060 3050 GOSUB 30030:PRINT"COPY SUCCESSFUL. ";:GOTO3070 3060 PRINT"ERROR. ONLY ";NB;" OUT "; 3070 PRINTBC;"BYTES COPIED." 3100 PRINT"PRESS ";CHR$(18); 3110 PRINT" RETURN";CHR$(146); 3120 PRINT" TO COPY ANOTHER FILE" 3130 GETDM$:IFDM$=""THEN3130 3140 IFDM$=CHR$(13)THEN1000 3150 END 4010 REM NO FILES ERROR HANDLING 4030 PRINTLEFT$(PL$,21); 4040 PRINT"NO FILES ON THIS DISK." 4050 PRINT"PRESS ";CHR$(18);" RETURN ";CHR$(146);" TO TRY ANOTHER DISK." 4070 GETDM$:IFDM$=""THEN4070 4080 IFDM$=CHR$(13)THEN1000 4090 END 10000 DATA76,15,31,76,88,31,76,154 10010 DATA31,108,3,0,108,5,0,32 10020 DATA9,31,152,170,32,198,255,168 10030 DATA176,57,169,0,133,251,169,32 10040 DATA133,252,160,0,32,207,255,145 10050 DATA251,230,251,208,2,230,252,165 10060 DATA144,208,13,165,252,201,160,144 10070 DATA235,32,204,255,160,0,240,19 10080 DATA164,144,32,204,255,192,64,208 10090 DATA10,164,251,165,252,56,233,32 10100 DATA76,12,31,169,240,76,12,31 10110 DATA32,9,31,152,170,32,201,255 10120 DATA168,176,240,165,251,141,174,31 10130 DATA165,252,141,175,31,169,0,133 10140 DATA251,169,32,133,252,160,0,177 10150 DATA251,32,210,255,164,144,208,20 10160 DATA230,251,208,2,230,252,165,252 10170 DATA205,175,31,144,234,165,251,205 10180 DATA174,31,144,227,32,204,255,76 10190 DATA73,31,32,9,31,132,251,24 10200 DATA105,32,133,252,160,0,177,251 10210 DATA168,169,0,76,12,31 20000 TL=0:FORI=0TO173 20010 TL=TL+PEEK(7936+I) 20020 T=INT((I+1)/8)*8-1 20030 IFT=ITHENPRINTTL:TL=0 20040 NEXTI:PRINTTL 30000 INPUT#15,E,E$,E1,E2 30010 IFE=0THENE=(ST AND 191):E$="*ST*" 30020 RETURN 30030 OPEN1,8,0,"$0:" 30040 GOSUB30000:IFETHENSTOP:GOTO860 30050 GOSUB30100:GOSUB30100 30060 Q=Q+1:GET#1,X$:IFX$<>""GOTO30060 30070 GOSUB30100 30080 PRINT" [145]" 30082 L=X+Y*256:PRINT"--->";L;"BLOCKS FREE <---[158][145][145][145]" 30090 CLOSE1:PRINT#15,"I":RETURN 30100 GET#1,X$:GET#1,X$:GET#1,X$ 30130 X=LEN(X$):IFXTHENX=ASC(X$) 30140 GET#1,X$:Y=LEN(X$):IFYTHENY=ASC(X$) 30150 RETURN